/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.STCMCU.com --------------------------------------------*/
/* --- Web: www.STCMCUDATA.com  ---------------------------------------*/
/* --- QQ:  800003751 -------------------------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序            */
/*---------------------------------------------------------------------*/

#include "config.h"
#include "sys.h"

#include <stdio.h>

#ifndef __SDCC
#include <lint.h>
#error "This header file must be used for SDCC compiler !"
#endif
#include <compiler.h>


/***************	功能说明	****************

本例程基于STC8H8K64U为主控芯片的实验箱8进行编写测试，STC8G、STC8H系列芯片可通用参考.

下载时, 选择时钟 24MHz (可以在配置文件"config.h"中修改).

******************************************/

/*************	本地变量声明	**************/


/*************	本地函数声明	**************/
static void UART_config(void);
/*************  外部函数和变量声明 *****************/
extern u16 cnt;
/******************** 主函数 **************************/
void main(void)
{
    UART_config();
    irm_init();
    sys_timer_init();
    buzzer_init();
    touch_init();
    ntc_init();
    sys_params_init();
    display_init();
    modbus_init();
    output_init();
    EA = 1;
    while(1) 
    {
        if(sysTimer.sysTimerFlag10ms)       //10ms任务列表
        {
            sysTimer.sysTimerFlag10ms = 0;
        }
        if(sysTimer.sysTimerFlag20ms)       //20ms任务列表
        {
            sysTimer.sysTimerFlag20ms = 0;
        }
        if(sysTimer.sysTimerFlag50ms)       //50ms任务列表
        {
            sysTimer.sysTimerFlag50ms = 0;
            modbus_func();
        }
        if(sysTimer.sysTimerFlag100ms)      //100ms任务列表
        {
            sysTimer.sysTimerFlag100ms = 0;
            touch_func();
            buzzer_func();
        }
        if(sysTimer.sysTimerFlag200ms)      //200ms任务列表
        {
            sysTimer.sysTimerFlag200ms = 0;
        }
        if(sysTimer.sysTimerFlag500ms)      //500ms任务列表
        {
            sysTimer.sysTimerFlag500ms = 0;
            sys_func();
            display_func();
            output_func();
        }
        if(sysTimer.sysTimerFlag1000ms)   //1000ms任务列表
        {
            sysTimer.sysTimerFlag1000ms = 0;
            ntc_func();
            sys_error_func();
        }
        if(sysTimer.sysTimerFlag2000ms)   //2000ms任务列表
        {
            sysTimer.sysTimerFlag2000ms = 0;
            sys_params_saved();
        }
        
    }
}


static void UART_config(void)
{
    COMx_InitDefine __xdata COMx_InitStructure;
    GPIO_InitTypeDef __xdata GPIO_InitStructure;        //结构定义

    GPIO_InitStructure.Pin = GPIO_Pin_0 | GPIO_Pin_1;        //指定要初始化的IO,
    GPIO_InitStructure.Mode = GPIO_PullUp;      //指定IO的输入或输出方式
    GPIO_Inilize(GPIO_P3, &GPIO_InitStructure); //初始化

    COMx_InitStructure.UART_Mode = UART_8bit_BRTx;
    COMx_InitStructure.UART_BRT_Use = BRT_Timer1;
    COMx_InitStructure.UART_BaudRate = 115200;
    COMx_InitStructure.Morecommunicate = DISABLE;
    COMx_InitStructure.UART_RxEnable = DISABLE;
    COMx_InitStructure.BaudRateDouble = DISABLE;
    COMx_InitStructure.UART_Interrupt = ENABLE;
    COMx_InitStructure.UART_Priority = Priority_0;
    COMx_InitStructure.UART_P_SW = UART1_SW_P30_P31;
    UART_Configuration(UART1, &COMx_InitStructure);
}

